

// 滚动时长（s）
const scrollBox = {
  mounted(el, binding) {
    // 延迟加载，防止元素没有渲染
    // setTimeout(()=>{
      addAnimation(el)
    // },1000)
  },


  // 清理动画样式
  unmounted(el) {
    // 清除定时器
    clearInterval(el.timer)
  }
}

function cloneNodeWithEvents(srcNode) {
  // 克隆节点
  var cloneNode = srcNode.cloneNode(true);

  // 获取原节点上的所有事件监听器
  var events = getEventListeners(srcNode);

  // 遍历事件监听器，并添加到克隆节点上
  Object.keys(events).forEach(function(type) {
    var listeners = events[type];
    listeners.forEach(function(listener) {
      cloneNode.addEventListener(type, listener.listener, listener.options);
    });
  });

  return cloneNode;
}

// 获取所有事件监听器的函数（仅在支持的浏览器中可用）
function getEventListeners(node) {
  if (window.getEventListeners) {
    return window.getEventListeners(node);
  } else {
    throw new Error('getEventListeners function is not supported in this browser');
  }
}



/**
 * 添加动画
 * @param {Object } el dom节点
 * */
function addAnimation(el) {
  // console.log(el.scrollHeight,el.offsetHeight,el.scrollTop)
  // 检查盒子内容是否超出高度
  if (el.scrollHeight <= el.offsetHeight){
    return;
  }

  // 鼠标点击事件
  // el.addEventListener('click', () => {
  //   console.log("定时任务",el.scrollHeight,el.offsetHeight,el.scrollTop)
  //   el.scroll(0, el.scrollTop + el.offsetHeight);
  // })
  // 鼠标移入事件
  el.addEventListener('mouseenter', () => {
    clearInterval(el.timer)
  })
  // 鼠标移出事件
  el.addEventListener('mouseleave', () => {
    animation(el, 500)
  })
  // // 鼠标滚动事件
  el.addEventListener('wheel', () => {
    if (el.scrollTop >= el.scrollHeight / 2) {
      el.scroll(0, 0)
    }
  })
  animation(el);
}

// 动画函数
function animation(el) {
  // 先清除定时器
  clearInterval(el.timer)

  // 设置定时器
  el.timer = setInterval(() => {
    // console.log("定时任务",el.scrollHeight,el.offsetHeight,el.scrollTop)
    if (el.scrollTop >= el.scrollHeight / 2) {
      el.scroll(0, 0)
    } else {
      el.scroll(0, el.scrollTop + 1);
    }
  }, 50)
}


export default scrollBox
